#ifndef __STDMYSTRING_H_
#define __STDMYSTRING_H_

#include <iostream>

class StdMyString
{
private:
    char *s;
    int capacity;
    int size;
public:
    StdMyString();
    StdMyString(const char *s);
    StdMyString(const StdMyString& str);
    ~StdMyString();
    StdMyString& operator=(const StdMyString& str);

    StdMyString operator+(const StdMyString& str);
    StdMyString operator+(const char c);
    StdMyString& operator+=(const StdMyString& str);
    StdMyString& operator+=(const char c);

    StdMyString operator-(const StdMyString& str);
    StdMyString& operator-=(const StdMyString& str);

    bool operator>(const StdMyString& str);
    bool operator<(const StdMyString& str);
    bool operator==(const StdMyString& str);
    bool operator>=(const StdMyString& str);
    bool operator<=(const StdMyString& str);
    bool operator!=(const StdMyString& str);

    bool operator&&(const StdMyString& str);

    char& operator[](int index);

    // StringList Split(const char* demil);
    
    //重载关键字
    /*operator int();
    operator double();*/

    friend std::ostream& operator<<(std::ostream& os, const StdMyString& s);
    friend std::istream& operator>>(std::istream& is, const StdMyString& s);
    friend class StringList;
};

std::ostream& operator<<(std::ostream& os, const StdMyString& s);
std::istream& operator>>(std::istream& is, StdMyString& s);

class StringList
{
//重载+ - += -= << split
private:
    StdMyString* stringList;
    int size;
    int capacity;
public:
    StringList();
    StringList(const StdMyString* list);
    StringList(const StringList& list);
    ~StringList();

    void show();
    StringList operator=(const StringList& list);

    StringList operator+(const StringList& list);
    StringList operator+(const StdMyString& str);
    StringList operator-(const StdMyString& str);
    StringList& operator+=(const StringList& list);
    StringList& operator+=(const StdMyString& str);
    StringList& operator-=(const StdMyString& str);
    StdMyString& operator[](int index);

    StringList Split(StdMyString str,const char* demil);
    
    friend class StdMyString;
};





#endif